home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 273_01 / sreadc.ca < prev    next >
Text File  |  1988-02-09  |  911b  |  40 lines

  1. #include <dos.h>
  2. sread_c(int row, int col, char *area)
  3. /* This will do a read a character at row,col and
  4.    place it into the area pointer to by area.
  5. */
  6. {
  7.   extern int color, mono, cga, ega, scrseg, bios;
  8.   union REGS inregs;
  9.   int   scrofs, orow, ocol;
  10.   char pchar;
  11.   char far *base;
  12.   char far *work;
  13.     if(mono) base=(char far *)0xb0000000;
  14.     else base=(char far *)0xb8000000;
  15.   if(bios) {
  16.         locate(row,col) ;
  17.         inregs.h.ah=0x08;
  18.         inregs.h.bh=0x00;
  19.         int86(0x10,&inregs,&inregs);
  20.         *area=inregs.h.al;
  21.         return(0);
  22.   }
  23.     scrofs = ((((row+1) * 160) - 160) + ((col+1) * 2)) - 2;
  24.     work = base + scrofs;
  25.     asm les bx,work
  26.     if(cga) {
  27.             asm     mov    dx,03dah
  28.             asm        in    al,dx
  29.             asm        test al,1
  30.             asm        jnz $-3
  31.             asm        in    al,dx
  32.             asm        test al,1
  33.             asm        jz $-3
  34.         }
  35.     asm mov cl,byte ptr es:[bx]
  36.     asm mov pchar,cl
  37.     *area = pchar;
  38.     return(0);
  39. }
  40.